跳到主要内容

02UML类图关系

UML类图关系

​ 面向过程的语言,本质就是函数间的调用关系,但是面向对象以后,函数和数据被封装到类以后,对象的函数间发生关系,此时的研究方向就变成了,类与类之间的关系

1、纵向

继承父类

实现父类接口

2、横向

类成员对象,引用,指针。

类中成员函数的对象,引用,指针。

(友元也是横向扩展的关系)

3、类类之间关系

a、泛化(Generalization )

​ 泛化是一种继承关系;泛化是特殊到一般的关系,它指定了子类如

​ 何特化父类的所有特征和行为。

箭头指向: 带三角箭头的实线,箭头指向父类

类图关系:

b、实现(Interface Realization )

​ 实现是一种类与接口的关系,表示类是接口所有特征和行为的实现。 **箭头指向:**带三角箭头的虚线,箭头指向接口

类图关系:

c、关联
组合关联(Composition )

​ 组合也是关联关系的一种特例,他体现的是一种 contains-

​ a 的关系,这种关系比聚合更强,也称为强聚合;同样体现

整体与部分间的关系。

根据关联的强弱区分关联种类

各个关联的代码层面无法区分

组合关系也就是成员关系。

箭头及指向: 带实心菱形的实线,菱形指向整体。

类图关系

聚合关联(Aggregation )

​ 聚合是关联关系的一种特例,体现的是整体与部分拥有的

关系即 has-a 的关系,此时整体与部分之间是可分离的,

表现在代码层面,和关联关系是一致的,只能从语义级别来区分。

箭头及指向: 带空心菱形的实心线,菱形指向整体。

类图关系

普通关联(Association )

​ 是一种拥有的关系, 使一个类知道另一个类的属性和方法,

调的是一种 A-A 的关系;关联可以是双向的,也可以是单向

​ 的。双向的关联可以有两个箭头或者没有箭头,单向的关联

​ 有一个箭头 。

在代码层面,通常体现为成员变量的关系。

箭头及指向: 带普通箭头的实心线,指向被拥有者。

类图关系:

依赖关联(Dependency )

是一种使用的关系,即一个类的实现需要另一个类的协助,

​ 所以要尽量不使用双向的互相依赖。

箭头及指向: 带箭头的虚线,指向被使用者

类图关系

综合评价:

​ 对于继承、实现体现的是一种类与类、或者类与接口间的纵向关系。

​ 其他四种关联则体现的是类与类、类与接口间的引用、横向关系,是比较难以区分的。

​ 集中关联的强弱程度依次为:组合>聚合>关联>依赖